import { ElMessage } from "element-plus";

/**
 * 提取公共逻辑：body  header  code的处理。。。
 * 
 */
interface Options extends Omit<RequestInit,'body'>{
    // body?:{
    //     [name:string]:any
    // }
    body?:Record<string,any>
}

// let a:number = 1

const baseUrl = "http://jacklv.cn";
export default function request(url:string,options:Options={}):Promise<any>{
    const {body,...rest} = options;
    const fetchOptions:RequestInit = {
        ...rest,
    }
    if(options.method && options.method.toUpperCase() !== 'GET'){//如果请求方式是非get请求，则要处理body和headers
        fetchOptions.body = JSON.stringify(body || {})
        fetchOptions.headers = {
            "Content-Type":"application/json",
            
        }
    }
    fetchOptions.headers = {
        ...(fetchOptions.headers || {}),
        token:localStorage.token,
    }
    
    return fetch(baseUrl + url,fetchOptions)
    .then(response=>{
        return response.json();
    })
    .then(res=>{
        if(res.code ===1){
            //接口数据正常
            return res.data;
        }else{
            ElMessage.error(res.msg || "接口错误")
            return Promise.reject(res);
        }
    })
}




// request("/user/login",{
//     method:'post',
//     body:{}
    
// })
// .then(res=>{

// })
// .catch(err=>{})